package fr.afcepf.al22.qualite.data;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;

import fr.afcepf.al22.qualite.data.util.Al22DataSources;
import fr.afcepf.al22.qualite.entitee.Personne;
/**
 *DaoPersonneImpl.
 * @author Stagiaire
 *
 */
public class DaoPersonneImpl implements IDaoPersonne {
    /**
     * ds variable DataSource.
     */
private DataSource ds = new Al22DataSources();

/**reqAjout.
 * indice de paramettres nom dans la requete
 */
private String reqAjout =
"INSERT INTO personne (nom,mail,mdp,naissance)"
+ "VALUE(?,?,?,?)";

/**indiceNomAjout.
 * indice de paramettres nom dans la requete
 */
private final int indiceNomAjout = 1;
/**indiceMailAjout.
 * indice de paramettres nom dans la requete
 */
private final int indiceMailAjout = 2;
/**indiceMdpAjout.
 * indice de paramettres nom dans la requete
 */
private final int indiceMdpAjout = 3;
/**indiceNaissenceAjout.
 * indice de paramettres nom dans la requete
 */
private final int indiceNaissenceAjout = 4;
/**indiceIdGenere.
 * indice de paramettres nom dans la requete
 */
private final int indiceIdGenere = 5;
    @Override
    public Personne ajouter(Personne paramPers) {
        // TODO Auto-generated method stub
        Connection cnx = null;
        try {
            cnx = ds.getConnection();
            java.sql.PreparedStatement pstmt =
                    cnx.prepareStatement("",
                            Statement.RETURN_GENERATED_KEYS);
            pstmt.setString(indiceMdpAjout, paramPers.getMdp());
            pstmt.setString(indiceNomAjout, paramPers.getNom());
            pstmt.setString(indiceMailAjout, paramPers.getMail());
            pstmt.setDate(indiceNaissenceAjout,
                   new java.sql.Date(paramPers.getNaissance()
                           .getTime()));
            int nbLigne = pstmt.executeUpdate();
            ResultSet rsKey = pstmt.getGeneratedKeys();
            if(nbLigne ==1 && rsKey.next()){
                paramPers.setId(rsKey.getInt(indiceIdGenere));
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                cnx.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return paramPers;
    }

    @Override
    public List<Personne> rechercher(String paramNom) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Personne verifMail(String paramMail) {
        // TODO Auto-generated method stub
        return null;
    }

}
